package com.itools.core.service;

import com.itools.core.base.CommonResult;
import com.itools.core.result.FmsFileRecordPathResult;
import com.itools.core.result.FmsFileUploadResult;
import com.itools.core.result.FmsMultipartFileResult;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @project: itools-backend
 * @description:
 * @author: XUCHANG
 * @create: 2021-04-05 14:43
 */
public interface FmsFileHandleStrategyService {
    /**
     * 单个文件上传
     * @param file 文件
     * @param uploadToken 上传文件token
     * @return
     */
    CommonResult<FmsFileUploadResult> singletonUploadFile(MultipartFile file, String uploadToken);
    /**
     * 批量上传文件
     * @param files 文件
     * @param uploadToken 文件访问的token
     * @return
     */
    CommonResult<List<FmsMultipartFileResult>> filesMultipartUpload(MultipartFile[] files, String uploadToken);

    /**
     * 获取文件访问路径
     * @param uniqueIds List文件唯一id
     * @param expiredTime 过期时间
     * @param maxAccessCount 最大访问次数
     * @param type 文件下载 download/展示 show
     * @return
     */
    CommonResult<List<FmsFileRecordPathResult>> getFileUrlByUniqueIds(List<String> uniqueIds, Integer expiredTime, Integer maxAccessCount, String type);
    /**
     * 下载文件
     * @param uniqueId 文件唯一id
     * @param fileAccessToken 文件的访问token
     * @param response
     */
    void downloadFile(String fileAccessToken, HttpServletResponse response, String uniqueId);
}
